As the technology to produce integrated chips has advanced, the number of devices (e.g. transistors) placed on a chip has dramatically increased. An application specific integrated circuit (ASIC) may contain millions of transistors performing many different functions. A system on a chip (SOC) may contain multiple discrete functional units and multiple busses on a single chip. To control the operation of the many components on a chip, a controller may be used to execute firmware instructions from a memory within the chip. As software developers do for traditional software, firmware developers may produce upgraded versions of firmware that add or improve functionality or that fix bugs found in an earlier firmware version. When an updated firmware version is available, the user of the chip may want to upgrade to the updated firmware if it can be assured that the firmware is authentic.